// secret 8767643b87c00a1c82235ee32d4edeaa
// session_key: 'DwfZVUu0pBES1jk9tl5lrA==',
// openid: 'o_AjJ5d9H24PmSMU5T6rU5cph-3o'
//引入加密处理
// const Secret = require('./secret.js');

//引用express框架
const express = require('express');
//引用route路由
const login = express.Router();
//引用数据库操作逻辑
var UserBind = require('../model/userBind')
var User = require('../model/user')


const https = require('https');
const { post } = require('request');
const secret = '8767643b87c00a1c82235ee32d4edeaa';
const appid = 'wx8693b48c10533d9a';

login.post('/', (req, res) => {
	let data = {
		status: 200,
		tip: 'success',
		token: ''
	}
	let respon = res
	let js_code = req.body.code
	url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' + js_code + '&grant_type=authorization_code'
	// 请求微信小程序服务器获取openid
	https.get(url, (res) => {
		// 成功则打印数据
		res.on('data', (d) => {
			//选取用户openid
			let a = JSON.parse(d.toString())
			data.token = a.openid
			UserBind.findOne({ 'openId': a.openid }, (err, doc) => {
				// 数据库查询失败
				if (err) {
					data.status = '600'
					respon.status(200).json(data)
					return
				}
				// 用户已注册
				else if (doc) {
					// 登录完成，返回前端
					data.tip = '完成登录'
					respon.status(200).json(data)
				}
				//用户未注册
				else {
					let bind = {
						openId: a.openid,
						userId: ''
					}
					//对用户信息进行存储
					let user = new User(req.body.user)
					user.save((err, doc) => {
						// 存储失败处理
						if (err) {
							data.status = '600'
							respon.status(200).json(data)
							return
						}
						// 存储成功，则存储用户关联信息
						bind.userId = doc._id
						let userBind = new UserBind(bind)
						userBind.save((err, doc) => {
							// 存储失败处理
							if (err) {
								data.status = '600'
								respon.status(200).json(data)
								return
							}
							// 存储成功返回前端
							data.tip = '新用户登录'
							respon.status(200).json(data)
						})
					})
				}
			})
		});

	}).on('error', (e) => {
		console.log(e)
		//失败进行打印处理
		data.status = 500
		data.tip = '小程序终端出错'
		respon.status(200).json(data)
	});
});

//将路由对象做为模块成员进行导出
module.exports = login;